Interactive composition of workflow activities

ABSTRACT

Visual composition of an activity for re-use in a composite activity or in a workflow. A user declaratively and/or programmatically generates reusable composite activities from existing activities interactively using a visual designer. The activity has one or more configuration properties associated therewith that define the behavior of an aspect of the activity. Depending on the value of the configuration properties, the activity may be, for example, partially configured, fully configured, or minimally configured. A user or developer completes the configuration of the activity during re-use of the activity in a composite activity or in a workflow.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. provisional patent application No. 60/615,543 filed Oct. 1, 2004.

BACKGROUND

A workflow models a business process. Typical workflows include execution units referred to as activities. Some current systems lack a mechanism to enable users to visually create activities for use in the workflow. Further, some of the current systems enumerate activities at the workflow level (e.g., during execution of the workflow), but lack a design time mechanism for creating activities based on predefined activities.

SUMMARY

Embodiments of the invention include a user interface for visually creating an activity from predefined activities. In one embodiment, a composite activity is created at the activity level during design time. The user interface enables users to modify properties of the composite activity to specify, for example, design time, compile time, runtime and other behaviors associated with the composite activity. Properties associated with each activity within the composite activity may also be defined. For example, the composite activity may be considered completely configured, partially configured, or minimally configured based on one or more configuration properties associated with the composite activity.

Other features will be in part apparent and in part pointed out hereinafter. This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an exemplary workflow containing tasks and control flow composite activities.

FIG. 2 is an exemplary block diagram illustrating a component model associated with an activity.

FIG. 3 is an exemplary flow chart illustrating activity composition.

FIG. 4 is an exemplary block diagram illustrating an exemplary activity designer.

FIG. 5 is an exemplary user interface displaying properties and associated property values of an activity.

FIG. 6 is a block diagram illustrating an exemplary computer-readable medium on which aspects of the invention may be stored.

FIG. 7 is an exemplary user interface illustrating an activity designer.

FIG. 8 is an exemplary user interface illustrating the activity designer of FIG. 7 with a composite activity under development by a user.

FIG. 9 is an exemplary user interface illustrating the composite activity of FIG. 8 in a workflow.

FIG. 10 is an exemplary user interface illustrating the composite activity of FIG. 8 with particular activities locked.

FIG. 11 is an exemplary user interface illustrating the composite activity of FIG. 10 in a workflow.

Appendix A includes a set of properties that describe characteristics of an activity.

Appendix B includes another set of properties that define the behavior of an activity.

Corresponding reference characters indicate corresponding parts throughout the drawings.

DETAILED DESCRIPTION

FIG. 1 illustrates an exemplary workflow. Embodiments of the invention are operable with a workflow representing a process, such as a business process. Business processes are dependent on ordered tasks, activities, or the like that result in predictable and repeatable outcomes. Including the operating procedures, institutional working knowledge, and information resources of an organization, business processes are designed to satisfy defined business objectives in an efficient and timely manner. In an efficient environment, the functional components of a process can be readily identified, adapted, and deployed to address ever-changing corporate requirements. The workflow is an end user's experience interacting with the tasks in a business process. Tasks are modeled as activities, components, or the like, each representing a unit of work that is performed by a person or machine.

The relationship between workflows and activities is generally analogous to the relationship between a computer program and its statements. Activities are reusable components which encapsulate metadata for a step in a workflow process and can be used in either modeling workflows or in composition of activities. For example, activities may be used to compose complex activities. In one embodiment, a plurality of activities is presented to a user via a workflow designer application program. The user selects and organizes the activities to create the workflow representative of a business process. The created workflow is executed to model the business process. An example of a workflow is shown in FIG. 1. FIG. 1 is an exemplary workflow containing tasks and control flow composite activities.

Exemplary activities include the following: Send, SendRequest, SendResponse, Receive, ReceiveRequest, ReceiveResponse, Code, Delay, Fault, Suspend, Terminate, InvokeSchedule, InvokeSchedules, InvokeWebService, EventSource, EventSink, Sequence, Parallel, While, ConditionalBranch, Conditional, Constrained, ConstrainedActivityGroup, EventDriven, Listen, EventHandlers, ExceptionHandler, ExceptionHandlers, Compensate, CompensationHandler, Scope, and Schedule.

According to embodiments of the invention, the activity is the basic unit of execution in the workflow model and has associated properties, handlers, constraints and events. Each activity may be configured by user code in any programming language. For example, the user code may represent business or application logic or rules written in common language runtime (CLR) languages. Each activity supports pre-interception hooks and post-interception hooks into execution in the user code. Each activity has associated runtime execution semantics and behavior (e.g., state management, transactions, event handling and exception handling). Activities may share state with other activities. Activities may also be primitive activities or grouped into a composite activity. A primitive or basic activity has no substructure (e.g., child activities), and thus is a leaf node in a tree structure. On the other hand, a composite activity contains substructure (e.g., it is the parent of one or more child activities or contains one or more child activities).

Referring next to FIG. 2, each activity in the illustrated embodiment has an associated set of components that forms a component model for the activity. The components have properties that define the behavior of the components. The associated set of components includes an activity executor, an activity designer, an activity serializer, an activity validator (e.g., semantic checker), and an activity code generator, among other components or properties of the activity. The activity executor is a stateless component that implements the execution semantics for the activity. The activity executor works with the metadata of an activity to implement the activity. A core scheduler acts as a service provider for the activity executor to provide services to the activity executor.

The activity designer visually displays the design time visual representation of the activity. FIG. 4, described below, illustrates an activity designer user interface for an activity designer. The activity designer is a node in a designer hierarchy and may be themed or skinned. The activity designer is hosted in a design environment (e.g., an application program) and interacts with the host design environment via services. The activity validator enforces the activity semantics at compile time as well as runtime. The activity validator operates on the context of the workflow model and uses the services provided by the environment (e.g., compiler, designer, or runtime). Validation occurs at various points in the lifecycle of a workflow. Structural compliance checks are made when creating serialized representations of the workflow, when compiling, and in response to the user's request. The semantic checks may be stronger at runtime than those performed at compile-time to ensure the safety of a runtime operation such as the addition or replacement of an activity in the activity tree of a running instance. Aspects of the invention evaluate semantics associated with each of the activities for conformance or compliance with, for example, predefined interface requirements.

The activity serializer of FIG. 2 is a component that serializes the metadata of an activity. The activity serializer is called from the various model/format serializers. The entire workflow model is serialized based on an extensible schema into a declarative markup language which may be further translated into other workflow languages as desired.

In one embodiment of the invention, users may reuse complex business process logic by composing custom activities as illustrated in FIG. 3. Embodiments of the invention enable an activity writer to declaratively (e.g., using a markup language) and/or programmatically (e.g., via code) generate reusable composite activities from existing activities interactively using a visual designer. Activity composition includes declaring activity metadata, associating business logic with an activity via an activity component, defining design time behavior and visualization of activity via an activity designer, validation of activity semantics via a semantic validation component, defining runtime behavior of the activity via an activity executor, serialization of an activity via an activity serializer, code generation of an activity via an activity code generator, etc. To facilitate the process of activity creation, aspects of the invention include a visually interactive composition designer (e.g., a user interface) to allow developers to create activities by visually defining a hierarchy of the activity, declaring activity metadata, associating business logic and building other required components and associating them with the activity. The user interface reduces the time for activity development. Primitive activities (e.g., activities with no child activities) and/or composite activities may be defined by the user in embodiments of the invention.

Activity writers define the aspects of an activity including, but not limited to, a metadata class definition, an executor that provides runtime execution logic, a validator that provides design-time and runtime validation logic, a designer that describes appearance and behavior in the authoring environment, a serializer that provides custom serialization behavior if required, and a code generator that allows a developer to participate in compile-time code generation. The custom activity designer helps configure these options and introduces further features which are valuable when creating composite activities.

Referring again to FIG. 3, a method of one aspect of the invention enables a user to create a composite workflow activity for use in a workflow. The method operates in a computing system having a display and a user interface selection device. The method includes displaying at least one predefined workflow activity to a user on the display at design time (e.g., not during execution of the workflow) at 302. The method also includes receiving, from the user via the user interface selection device, a selection of at least one of the displayed activities to define a composite activity at 304. In one example, the user selects at least two activities and arranges the selected activities via flow information (e.g., the activities may be arranged in sequence or in parallel). The flow information defines a relationship between the selected activities. According to the exemplary method, the user interface displays, on the display, the selected activities arranged via the flow information at 306. For example, the user may drag and drop activities (as children) to the composite activity that is currently being designed.

The computing system receives, via the user interface selection device, a value for a configuration property or the like associated with the one or more selected activities at 308. The configuration property value defines access in the workflow by a user to one or more properties or the structure associated with the selected activity. For example, the value may define whether any of the properties or structure of the selected activity are visible, editable, and/or locked in the user interface or programmatically. Visibility of an activity identifies whether the activity may be “seen” by the programmer during the authoring (e.g., available in the parent's collection during enumeration). The ability to “edit” an activity determines if the metadata of the activity may be programmed by the programmer during the authoring (e.g., activity properties are available for programming). Locking an activity prevents child activities of a parent activity from being moved or removed from the parent activity's collection.

The received value for the configuration property may define the activity as fully configured, partially configured, or minimally configured. The configuration property may be associated with a particular activity and/or with a particular property of the activity. The method configures, based on the received value for the configuration property, the selected activity as the composite activity at 310. The method generates software code implementing the composite activity at 312 and provides the composite activity to the developer or other user for use in the workflow at 314. In one embodiment, a compiler packages the activities into binary form for their reuse in the workflow or in the composition of other activities.

Aspects of the invention enable the user to include the composite activity in the workflow and extend the functionality of the composite activity in the workflow as a function of the configuration property. When creating the workflow, the user may view and/or configure the properties of the composite activity as determined by the configuration property. In an alternative embodiment, the user views and/or configures the properties of the composite activity as determined by a plurality of configuration properties, with each of the configuration properties defining access by the user to a particular activity or property of the composite activity. A compiler in one aspect of the invention enforces the ways in which the activities can be reused as a function of the configuration property.

A first activity writer may specify via the configuration property that only a subset of the properties of an activity be shown in the activity designer of a second activity writer. This occurs when the first activity writer is creating an activity for user by the second activity writer to create a composite activity. For example, an attribute such as [ActivityDesignerBrowsable] may be associated with one of the properties of the activity and may define whether the associated property is displayed in the activity designer of the second activity writer.

In one embodiment, one or more computer-readable media have computer-executable instructions for implementing the method illustrated in FIG. 3.

Referring next to FIG. 4, an exemplary block diagram illustrates an exemplary activity designer user interface 402 for implementing the method illustrated in FIG. 3. The activity designer user interface 402 includes one or more display areas or portions. For example, the display area includes an activity list portion 404 displaying a list of predefined activities, a designer portion 406 displaying activities selected by the user (e.g., dragged and dropped from the activity list portion 404), and a property portion 408 displaying a list of properties and corresponding property values for the selected activities. The activity writer uses a property browser, for example, in the property portion 408 and configures a set of properties for an activity selected in the designer portion 406. A set of properties that describe the basic characteristics of an activity are listed in Appendix A. A user also may add other properties and handlers for the activity being designed. The user may specify properties such as those listed in Appendix B for each property that the user adds.

Referring next to FIG. 5, an exemplary user interface displays properties and associated property values of an activity. Depending on the value associated with the configuration property of an activity, the workflow author who re-uses the activity may define the values of activity properties or otherwise configure the activity during workflow creation and deployment.

In one embodiment of the invention, the activity designer enables users to create activities which can be reused in a workflow according to various levels or models specified by the properties associated with the activities (e.g., the configuration property). Exemplary levels or models of re-use include black box, grey box and white box.

In the case of black box re-use, the activities which the user is able to create using the designer are structurally complete and completely configured using a set of preexisting activities or inheriting from a set of preexisting activities. The activity metadata is specified at the time of designing the activities. The user embeds and associates business logic with these activities. The user selectively hides the parts of an activity which the user does not want exposed at the time of reuse in a workflow but executed implicitly in the workflow. These type of activities are preconfigured and non modifiable on reuse in the workflow.

In the case of grey box reuse, the designer enables the user to create structurally modifiable and partially configured activities which the user is able to fully configure at the time of its use in a workflow. These activities typically contain a set of partially configured preexisting activities which are then completely configured by the user at the time of their reuse in the workflow. In this case, the user embeds a set of activities useful in accomplishing a certain task even though the activities are not structurally complete. The metadata of such activities may also be partly configured when designing the activities.

White box activities are non-configured and the user modifies their structure and metadata at the time of their reuse in the workflow.

In one embodiment, the configuration of an activity in a composite activity being designed is determined by the configuration properties of “Visibility” and “ContainerLocked”. These configuration properties are merely exemplary, and other properties or attributes that define whether an activity or any aspect thereof may be visible, editable, removable, or otherwise configurable during workflow or composite activity creation are within the scope of embodiments of the invention. The Visibility property (e.g., a Boolean property such as IsVisible) and the ContainerLocked property (e.g., a Boolean property such as IsLocked) enable users or developers to hide or otherwise not expose the inner workings of a composite activity to workflow authors. The Visibility property on a child activity in particular composite activity may be set (e.g., true or false) such that the user or developer is unable to view the child activity when creating a workflow or other composite activity using the particular composite activity. This means that the child activity does not visually appear to the user in the composite activity but the functionality of the child activity is within the composite activity. The ContainerLocked property on a composite activity may be set (e.g., true or false) such that the user or developer who re-uses the composite activity is unable add new activities to the composite activity and, in an alternative embodiment, remove any activities from the composite activity. If the composite activity is unlocked, the developer may add child activities at the end of the composite activity.

In an alternative embodiment, another configuration property specifies whether the metadata of an activity may be edited. In this example, each activity exposes a Boolean read-only property, such as IsEditable.

Referring next to FIG. 6, a block diagram illustrates an exemplary computer-readable medium 602 on which aspects of the invention may be stored. Aspects of the invention include one or more computer-readable media, such as computer-readable medium 602, having computer-executable components for interactive visual composition of activities. Exemplary components include a designer component 604, a display component 606, a property component 608, and a preview component 610. The designer component 604 provides a set of predefined workflow activities to the user and receives a selection of one or more of the predefined workflow activities. The display component 606 displays the selected activities to the user as a composite activity. The property component 608 receives a value for a configuration property associated with one of the selected activities displayed by the display component 606. For example, the value for the configuration property may specify that one or more of the selected activities or properties associated therewith will be partially hidden within the composite activity in the workflow. In one embodiment, one or more of the predefined activities inherits a property value from another one of the predefined activities. The preview component 610 displays the selected activities as the composite activity in a workflow as a function of the value received by the property component 608 for the configuration property.

Exemplary Operating Environment

The exemplary operating environment includes a general purpose computing device such as a computer executing computer-executable instructions. The computing device typically has at least some form of computer readable media. Computer readable media, which include both volatile and nonvolatile media, removable and non-removable media, may be any available medium that may be accessed by the general purpose computing device. By way of example and not limitation, computer readable media comprise computer storage media and communication media. Computer storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. Those skilled in the art are familiar with the modulated data signal, which has one or more of its characteristics set or changed in such a manner as to encode information in the signal. Wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media, are examples of communication media. Combinations of any of the above are also included within the scope of computer readable media. The computing device includes or has access to computer storage media in the form of removable and/or non-removable, volatile and/or nonvolatile memory. A user may enter commands and information into the computing device through input devices or user interface selection devices such as a keyboard and a pointing device (e.g., a mouse, trackball, pen, or touch pad). Other input devices (not shown) may be connected to the computing device. The computing device may operate in a networked environment using logical connections to one or more remote computers.

Although described in connection with an exemplary computing system environment, aspects of the invention are operational with numerous other general purpose or special purpose computing system environments or configurations. The computing system environment is not intended to suggest any limitation as to the scope of use or functionality of aspects of the invention. Moreover, the computing system environment should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment. Examples of well known computing systems, environments, and/or configurations that may be suitable for use in embodiments of the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, mobile telephones, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.

Embodiments of the invention may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.

An interface in the context of a software architecture includes a software module, component, code portion, or other sequence of computer-executable instructions. The interface includes, for example, a first module accessing a second module to perform computing tasks on behalf of the first module. The first and second modules include, in one example, application programming interfaces (APIs) such as provided by operating systems, component object model (COM) interfaces (e.g., for peer-to-peer application communication), and extensible markup language metadata interchange format (XMI) interfaces (e.g., for communication between web services).

The interface may be a tightly coupled, synchronous implementation such as in Java 2 Platform Enterprise Edition (J2EE), COM, or distributed COM (DCOM) examples. Alternatively or in addition, the interface may be a loosely coupled, asynchronous implementation such as in a web service (e.g., using the simple object access protocol). In general, the interface includes any combination of the following characteristics: tightly coupled, loosely coupled, synchronous, and asynchronous. Further, the interface may conform to a standard protocol, a proprietary protocol, or any combination of standard and proprietary protocols. The interfaces described herein may all be part of a single interface or may be implemented as separate interfaces or any combination therein. The interfaces may execute locally or remotely to provide functionality. Further, the interfaces may include additional or less functionality than illustrated or described herein.

In operation, the computing device executes computer-executable instructions such as those illustrated in the figures to implement embodiments of the invention.

The following examples further illustrate aspects of the invention. FIG. 7 through FIG. 11 include exemplary user interfaces implementing embodiments of the invention. Aspects of the invention are also operable with other user interfaces not explicitly contained herein, but functionally similar (e.g., the layout or design of the user interface may differ, but still be within the scope of an embodiment of the invention).

FIG. 7 illustrates an exemplary user interface for an activity designer. FIG. 8 is an exemplary user interface illustrating the activity designer of FIG. 7 with a composite activity under development by a user. Referring next to FIG. 9, an exemplary user interface illustrates the composite activity of FIG. 8 in a workflow. In this example, none of the activities in the composite activity are locked, and as such, all the activities are visible within the workflow. Referring next to FIG. 10, an exemplary user interface illustrates the composite activity of FIG. 8 with particular activities specified as locked in the activity designer. In this example, the sequence1 activity and the code1 activity within the sequence2 activity are marked as locked or invisible. FIG. 11 is an exemplary user interface illustrating the composite activity of FIG. 10 in a workflow. In this example, the sequence1 activity and the code1 activity are not visible in the workflow.

In general, aspects of the invention include a computerized system for interactive composition of a workflow activity for use in a workflow. Hardware, software, firmware, computer-executable components, computer-executable instructions, and/or FIGS. 7-11 constitute the following means. The system includes means for presenting a plurality of workflow activities to a user at design time. Each of the plurality of activities has one or more properties associated therewith. Each of the properties defines a behavior of the associated activity. The system also includes means for receiving a selection from the user of at least one of the plurality of activities to define a composite activity, means for presenting to the user a plurality of properties associated with the received selection of activities, and means for receiving from the user a property value for at least one of the properties. The received property value defines a behavior of the activity in the composite activity in a workflow. The system further includes means for configuring, as a function of the received property value, the received selection of activities as the composite activity for use in the workflow. For example, each of the properties defines one or more of the following associated with the received selection of activities: a design time behavior, a runtime behavior, a semantic behavior, and a visualization behavior. Additionally, the system includes means for enabling the user to create the workflow with the composite activity.

The order of execution or performance of the operations illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and the operations may include more or less elements than those disclosed herein. For example, it is contemplated that executing or performing a particular operation or element before, contemporaneously with, or after another operation or element is within the scope of an embodiment of the invention.

When introducing elements of embodiments of the invention, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements.

Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described herein. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

Appendix A

An exemplary set of properties that describe characteristics of an activity is shown below. TABLE A1 Activity Properties. Property Name Category Comment Editor (Name) Activity This is a string that will be used to iterate upon as this custom activity is used within the workflow. For example, if a developer specifies “MyCustomActivityName” then the first use of this custom activity will be MyCustomActivityName1 and the second MyCustomActivityName2. Base Class Activity This is the base class that the activity derives from. The default base class is Sequence. Description Activity This is a standard description of the property. Activity Properties Activity Properties This allows a developer to The property browser define the properties on ellipsis launches the their custom activities. collection editor. The When a property has been properties within here fully defined, it is added to are defined below. the metadata class definition with corresponding types, getters and setters. Designer Companion Classes This is the name of the The property browser designer class specific launches the Type picker. to this activity. The type picker shows all activities whose designer derives from the selected base type. Executor Companion Classes This is the name of the The property browser executor class specific launches the Type picker. to this activity. The type picker shows all activities whose executor derives from the selected basetype. Validator Companion Classes This is the name of the The property browser validator class specific launches the Type picker. to this activity. The type picker shows all activities whose validator derives from the selected base type. RootActivity DataContext This is a Boolean indicating if this activity supports the IRootActivity interface. Since IRootActivity inherits from IDataContext, setting this property to true it will set the “Supports DataContext” property to true and make it read only. Setting this property to false, will set “Supports DataContext” property to false. Supports DataContext When the custom activity DataContext supports a data context, upon usage within a workflow, a new class is generated in the datacontext of calling workflow. This is a True/False Boolean field. The required ISupportDataContext code is put into the hidden Designer.cs file, not the custom activity code. If the selected base type supports a data context, this property is set to true and becomes read only. Companion DataContext This is the name of the Class Name class which the activity's datacontext will derive from. A developer could define this class within the activity and introduce properties which could be referenced by other activities in the containing workflow. This property is hidden until the developer sets “Supports DataContext” to True and then is nested in the property browser when this occurs.

Appendix B

An exemplary set of properties that define the behavior of an activity is set forth below. TABLE B1 Activity Properties. Name Category Comments Name Property This is the name of the property. Type Property This is the Type of the property. The Type Picker will be launched from here. Browsable Attributes This defines whether a property or event should be displayed in a Properties window Category Attributes This specifies the name of the category in which to group the property or event when displayed in the PropertyGrid control set to Categorized mode. Description Attributes This specifies a description for a property or event. This description is displayed in the PropertyGrid control when the activity being used in a workflow and is selected. Validation Attributes The developer can select from Optional - the property can accept null values. Required - values must be specified for property and we automatically check to see that this is the case. Hidden - no automatic validation. If ‘Required’ is selected, upon re-use, the custom activity will require that the property be configured via smart tags. This essentially provides a short cut to writing this validation in the Validator class. DesignerSerializationVisiblity Advanced This determines how/if properties will be serialized. Attributes Setting to visible (the default) will cause the property to be serialized normally. Setting to hidden will prevent property serialization (disables undo/redo and does property does not show up in XOML, etc) Setting to content is used for collection properties. The collection object itself are not serialized, however the contents of the collection are. If a developer chooses a collection type, this property will be set to ‘content‘. If a developer chooses a non serializable type, this property will be set to ‘hidden‘. UITypeEditor Advanced This is a read only field. This is a discoverability Attributes mechanism for the UI type editor. If the property type (like Boolean, Bind, Condition, ParameterBindingCollection) has a UIEditor associated with it, this field will display it. Supports Databinding Databinding This is a ‘True/False’ combo box. Default is false. If set to true, a field of the Type defined above and a getter/setter which supports bind is generated. For example, if System.String is the type for a property called “MyProperty” then the following code would be generated: private BindBase myProp; [BaseType(typeof(String))] public BindBase MyProperty { get { return this.myProp; } set { if (this.IsRuntimeMode) throw new ReadOnlyException( ); } } 

1. A computerized system for interactive composition of a workflow activity for use in a workflow, said computerized system comprising: means for presenting a plurality of workflow activities to a user at design time, each of the plurality of activities having one or more properties associated therewith, each of said properties defining a behavior of the associated activity; means for receiving a selection from the user of at least one of the plurality of activities to define a composite activity; means for presenting to the user a plurality of properties associated with the received selection of activities; means for receiving from the user a property value for at least one of the properties, said received property value defining a behavior of the activity in the composite activity in a workflow; and means for configuring, as a function of the received property value, the received selection of activities as the composite activity for use in the workflow.
 2. The computerized system of claim 1, further comprising means for enabling the user to create the workflow with the composite activity.
 3. The computerized system of claim 1, further comprising a display area having: an activity portion for displaying the plurality of workflow activities; a property portion for displaying a list of the properties and values associated therewith; and a designer portion for displaying the composite activity.
 4. The computerized system of claim 1, wherein the property value comprises a value defining visibility of the properties in the composite activity in the workflow.
 5. The computerized system of claim 1, wherein the property value comprises a value specifying whether a particular property of the composite activity is editable in the workflow.
 6. The computerized system of claim 1, wherein each of the properties defines one or more of the following associated with the received selection of activities: a design time behavior, a runtime behavior, a semantic behavior, and a visualization behavior.
 7. The computerized system of claim 1, further comprising a compiler for enforcing the defined behavior of the activity during workflow creation,
 8. The computerized system of claim 1, wherein the properties define whether the activities are one or more of the following: visible, editable, and lockable.
 9. The computerized system of claim 1, further comprising means for authoring the composite activity declaratively or programmatically.
 10. In a computing system having a display and a user interface selection device, a method of enabling a user to create a composite workflow activity for use in a workflow, said method comprising: displaying predefined workflow activities to a user on the display at design time; receiving, via the user interface selection device, a selection of at least one of the displayed activities to define a composite activity; displaying, on the display, the selected activity; receiving, via the user interface selection device, a value for a configuration property associated with the selected activity, said value configuring other properties associated with the selected activity; configuring, based on the received value for the configuration property, the selected activity as the composite activity; providing the composite activity to the user for use in the workflow.
 11. The method of claim 10, further comprising generating software code implementing the composite activity.
 12. The method of claim 10, further comprising: receiving, via the user interface selection device, a selection of at least two of the displayed activities and flow information defining a relationship between the selected activities; and displaying, on the display, the selected activities arranged via the flow information.
 13. The method of claim 10, wherein the received value for the configuration property corresponds to one or more of the following: a fully-configured activity, a partially-configured activity, and a minimally-configured activity.
 14. The method of claim 10, further comprising enabling the user to extend the functionality of the composite activity in the workflow as a function of the configuration property.
 15. The method of claim 10, wherein the configuration property is associated with a particular property of the selected activity.
 16. The method of claim 10, wherein one or more computer-readable media have computer-executable instructions for implementing the method of claim
 10. 17. One or more computer-readable media having computer-executable components for interactive visual composition of activities, said components comprising: a designer component for providing a set of predefined workflow activities to a user and receiving a selection of one or more of the predefined workflow activities; a display component for displaying the selected activities to the user as a composite activity; a property component for receiving a value for a configuration property associated with one of the selected activities displayed by the display component; and a preview component for displaying the selected activities as the composite activity in a workflow as a function of the value received by the property component for the configuration property.
 18. The computer-readable media of claim 17, wherein one or more of the predefined activities inherits a property value from another one of the predefined activities.
 19. The computer-readable media of claim 17, wherein the value for the configuration property specifies access in the workflow to one of the selected activities.
 20. The computer-readable media of claim 17, wherein the value for the configuration property specifies that one or more of the selected activities or properties associated therewith be partially hidden within the composite activity in the workflow. 